/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package negocio;

import controladoresJPA.UsuarioJpaController;
import java.util.List;
import javax.annotation.Resource;
import javax.ejb.EJBContext;
import javax.ejb.Stateless;
import javax.ejb.TransactionManagement;
import javax.ejb.TransactionManagementType;
import javax.inject.Named;
import modelo.ConsumidorPersona;
import modelo.Direccion;
import modelo.Persona;
import modelo.PersonaContacto;
import modelo.Usuario;

/**
 *
 * @author Francisco
 */
@Named("usuarioBI")
@Stateless
@TransactionManagement(TransactionManagementType.BEAN)
public class UsuarioBI {
    
    @Resource
    private EJBContext eJBContext;
    
    public void crear(Usuario usuario, Persona persona, ConsumidorPersona consumidorPersona, Direccion direccion,
            List<PersonaContacto> personaContactos) throws Exception{
        try{
            UsuarioJpaController usuarioJpaController = new UsuarioJpaController(eJBContext.getUserTransaction(), EFServicio.getEmf());
            usuarioJpaController.alta(usuario, persona, consumidorPersona, direccion, personaContactos);
            //usuarioJpaController.create(usuario);
        }catch(Exception e){
            try{
                e.printStackTrace();
            }catch(Exception ex){
                ex.printStackTrace();
            }
            throw new Exception("Ocurrio un error al dar de alta el usuario.");
        }
    }
    
    public Boolean verificarLogin(String usuario, String contrasena) throws Exception{
        try{
            UsuarioJpaController usuarioJpaController = new UsuarioJpaController(eJBContext.getUserTransaction(), EFServicio.getEmf());
            Usuario usuarioMod = usuarioJpaController.findUsuario(usuario);
            if(usuarioMod.getContrasena().equals(contrasena)){
                return true;
            }
            else{
                return false;
            }
        }catch(Exception e){
            return false;
        }
    }
    
    public Usuario buscarUsuario(String nombreUsuario) throws Exception{
        try{
            UsuarioJpaController usuarioJpaController = new UsuarioJpaController(eJBContext.getUserTransaction(), EFServicio.getEmf());
            Usuario usuario = usuarioJpaController.findUsuario(nombreUsuario);
            return usuario;
        }catch(Exception e){
            e.printStackTrace();
            throw new Exception("No se pudo localizar el usuario");
        }
    }
    
    public List<Usuario> buscarUsuariosLigados(Integer idUsuario) throws Exception{
        try{
            UsuarioJpaController ujc = new UsuarioJpaController(eJBContext.getUserTransaction(), EFServicio.getEmf());
            List<Usuario> usuarios = ujc.findUsuarioLigado(idUsuario);
            return usuarios;
        }catch(Exception e){
            e.printStackTrace();
            throw new Exception("No se pudieron localizar los usuarios");
        }
    }
    
    public Usuario buscarUsuarioPorId(Integer idUsuario)throws Exception{
        try{
            UsuarioJpaController ujc = new UsuarioJpaController(eJBContext.getUserTransaction(), EFServicio.getEmf());
            return ujc.findUsuario(idUsuario);
        }catch(Exception e){
            e.printStackTrace();
            throw new Exception("No se pudieron localizar los usuarios");
        }
    }
}
